Escuché que la forma más popular de definir la pantalla y la ruta es usar la clase sellada
Pero no puedo entender intuitivamente de esa manera.
primero es ¿Por qué usar clase sellada ? hay otras clases que incluyen solo la clase predeterminada.
El segundo es ¿Por qué usar objeto en clase sellada?
Creo que la segunda pregunta tiene relación con un singleton. Pero, ¿por qué la pantalla debería ser un singleton?
este es el código que he visto
sealed class Screen(val route: String) { object Home: Screen(route = "home_screen") object Detail: Screen(route = "detail_screen") }La clase sellada es una buena opción cuando tiene rutas con argumentos , como se muestra en la aplicación de muestra Jetcaster Compose:
sealed class Screen(val route: String) { object Home : Screen("home") object Player : Screen("player/{episodeUri}") { fun createRoute(episodeUri: String) = "player/$episodeUri" } }En caso de que no tenga argumentos en ninguna de sus rutas, puede usar la clase enum en su lugar, como se muestra en la aplicación de muestra Owl Compose:
enum class CourseTabs( @StringRes val title: Int, @DrawableRes val icon: Int, val route: String ) { MY_COURSES(R.string.my_courses, R.drawable.ic_grain, CoursesDestinations.MY_COURSES_ROUTE), FEATURED(R.string.featured, R.drawable.ic_featured, CoursesDestinations.FEATURED_ROUTE), SEARCH(R.string.search, R.drawable.ic_search, CoursesDestinations.SEARCH_COURSES_ROUTE) }